Helm Chart Configuration & Dependencies
This guide provides a structured approach to deploying Exivity on Kubernetes using Helm, including all required dependencies and configuration steps.
The Exivity Helm chart deploys the Exivity application and can optionally deploy third-party middleware dependencies such as PostgreSQL and RabbitMQ through chart dependencies. The embedded dependencies are based on the Bitnami PostgreSQL Helm chart and Bitnami RabbitMQ Helm chart, currently consumed through the Exivity-hosted Bitnami chart mirror for compatibility. Exivity relies on these products, but you remain responsible for operating, securing, backing up, monitoring, upgrading, and supporting the third-party platforms used in your Kubernetes environment.
Key Configuration Optionsβ
Below are the most important Helm values to consider for a typical deployment. For the full list and advanced options, always refer to the values.yaml.
| Value | Description | Example |
|---|---|---|
nameOverride | Override deployment name (useful for multiple instances). | nameOverride: "exivity-prod" |
licence | Exivity license key. Use demo for evaluation, or request a trial/production key. | licence: "demo" |
secret.appKey / secret.jwtSecret | Application and JWT secrets. Set for production (auto-generated if empty). | secret.appKey: <your-key> |
πΎ storage.storageClass | Storage class for all persistent volumes. For multi-node clusters it must support RWX; for single-node clusters it only needs to support your chosen access mode (often RWO). | storage.storageClass: <your-storage-class> |
πΎ storage.permissions.enabled | Enable init container to fix volume ownership, useful for NFS. | storage.permissions.enabled: true |
π¦ ingress.enabled | Enable/disable ingress. | ingress.enabled: true |
π¦ ingress.host | Hostname for ingress. | ingress.host: exivity.example.com |
π¦ ingress.trustedProxy | Trusted proxy IPs for load balancers such as Traefik. | ingress.trustedProxy: "10.244.0.0/16" |
π postgresql.enabled | Deploy embedded PostgreSQL or use external PostgreSQL. | postgresql.enabled: false |
π postgresql.host | Hostname for external PostgreSQL. | postgresql.host: db.example.com |
π rabbitmq.enabled | Deploy embedded RabbitMQ or use external RabbitMQ. | rabbitmq.enabled: false |
π rabbitmq.host | Hostname for external RabbitMQ. | rabbitmq.host: mq.example.com |
π¦ service.tag | Image tag for Exivity service images. If empty, the chart default is used. | service.tag: "3.38.4" |
Prerequisitesβ
- Kubernetes cluster (cloud or on-premises)
kubectlandhelminstalled- Sufficient cluster resources (see System requirements)
- Shared storage for Exivity volumes. For multi-node clusters this must be RWX-capable (such as NFSv4 or a CSI-backed
ReadWriteManyprovider). For single-node clusters, RWX is not required and a local-path or HostPath RWO provisioner is sufficient (see below).
1. Shared Storage Setupβ
Exivity stores logs, configuration, and pipeline data on shared persistent volumes. The required access mode depends on cluster size:
- Multi-node clusters require
ReadWriteMany(RWX). NFSv4 is supported because it provides file locking, and CSI-backed providers such as Longhorn can be used when they support RWX volumes. When NFS is used, the recommended in-cluster option is the NFS Ganesha server and external provisioner (nfs-server-provisionerHelm chart), which serves NFSv4 with file locking. - Single-node clusters do not require RWX. Set
storage.sharedVolumeAccessMode: ReadWriteOnceand use any local-path or HostPath provisioner (for example K3s' built-inlocal-pathstorage class, orlocal-path-provisioner). RWX storage is only needed if you plan to add more nodes later.
Install NFS Server Provisioner (example)β
If your multi-node cluster does not already have a managed NFS solution, you can deploy the NFS Ganesha server and external provisioner in-cluster using Helm. This is a third-party component that you operate:
helm repo add nfs-ganesha-server-and-external-provisioner https://kubernetes-sigs.github.io/nfs-ganesha-server-and-external-provisioner/
helm install nfs-server nfs-ganesha-server-and-external-provisioner/nfs-server-provisioner \
--namespace nfs-server \
--create-namespace \
--wait \
--set persistence.enabled=true \
--set persistence.size=5Gi \
--set storageClass.name=<your-storage-class-name> \
--set storageClass.allowVolumeExpansion=true \
--set 'storageClass.mountOptions[0]=nfsvers=4.2' \
--set 'storageClass.mountOptions[1]=rsize=4096' \
--set 'storageClass.mountOptions[2]=wsize=4096' \
--set 'storageClass.mountOptions[3]=hard' \
--set 'storageClass.mountOptions[4]=retrans=3' \
--set 'storageClass.mountOptions[5]=proto=tcp' \
--set 'storageClass.mountOptions[6]=noatime' \
--set 'storageClass.mountOptions[7]=nodiratime'
Note: Replace
<your-storage-class-name>with a descriptive name (e.g.,exivity-nfs,shared-storage). You'll use this name when installing Exivity.
Note: Ensure your NFS server and Kubernetes storage class are configured for NFSv4. For cloud providers, see their documentation for managed NFS solutions (e.g., GKE Filestore, Azure Files, AWS EFS).
2. Add the Exivity Helm Repositoryβ
helm repo add exivity https://charts.exivity.com
helm repo update